Learning Resources

Here we outline some recommended material for students wishing to start on topics related to optimisation, artificial intelligence and dynamic systems from the process systems perspective.

Optimization

Books

  • Numerical Optimization by J. Nocedal and S. Wright
    • Great book to learn continuous optimization algorithms, the suggestion it to implementing pseudo-codes in your language of choice as you traverse through the book.
  • Nonlinear and Mixed-Integer Optimization: Fundamentals and Applications by C. A. Floudas
    • A favorite source to learn convex mixed-integer optimization
  • Algorithms for Optimization by Mykel J. Kochenderfer and Tim A. Wheeler
    • A comprehensive introduction to optimization, focus is on algorithm implementation rather than theoretical background, includes algorithms written in Julia. 

Online Courses

  • Convex Optimization I and Convex Optimization II by S. Boyd
    • Great content allover! Lectures 13-19 of COI and all COII are great, and generally underrated. An online book is also available.
  • Discrete Optimization by P. Van Hentenryck and C. Coffrin from Coursera learning platform
    • Interactive and very fun course to learn discrete optimization
  • Deterministic Optimization by  S. Ahmed from edX learning platform
    • A great interactive course which gives an overview to many optimization instances and problems, also accompanied with practical material.

Reinforcement Learning

Books

  • Reinforcement Learning: An Introduction by R. S. Sutton and A. G. Barto
    • One of the most complete books on the subject, latest version is from 2018. Complements nicely with online courses. Freely available online.
    • The Reinforcement Learning Specialization by Martha White and Adam White from Coursera covers a significant part of this book.

Online Courses

  • Deep Reinforcement Learning by Sergey Levine at UC Berkeley
    • Great content, including YouTube videos, homework, a subreddit, GitHub repositories, etc. 
  • Reinforcement Learning by David Silver
    • Nice and easy material to understand
  • Reinforcement Learning Specialization by Martha White and Adam White from Coursera learning platform
    • The course is mostly based on the book "Reinforcement Learning: An Introduction" by Sutton and Barto, making it a more interactive way to go through the book if that suits your learning style.
  • Reinforcement Learning by by Emma Brunskill at Stanford
    • All videos and asssignments are available, YouTube list here.
  • Practical Reinforcement Learning by P. Shvechikov and A. Panin from Coursera learning platform
    • Good overall content and intuitive explanations, includes online quizzes and excercises. 

Applied Statistics

Books

  • Information Theory, Inference, and Learning Algorithms by David MacKay
    • Great all-round book, conceptually clear and at the same time practical when it comes to algorithms. It is great for beginners but also useful for practitioners.
    • Online lectures based on the book also available here or on YouTube
    • The book is freely available here

Online Courses

Dynamic Optimization (Optimal control) and MPC

Books

  • Dynamic Programming and Optimal Control by  D. P. Bertsekas
    • Nice presentation that shows the relations between Dynamic Programming and Optimal Control. Written from a computer science perspective.
  • Predictive Control: With Constraints by J. Maciejowski
    • Good introductory material to Model Predictive Control
  • Numerical Optimal Control by M. Diehl and S. Gros
    • Great source on how to solve OC problems numerically, goes very well with his online course
  • Nonlinear and Dynamic Optimization: From Theory to Practice by B. Chachuat
    • This is a great source for a formal and complete description of dynamic optimization problems in engineering practice. It might be slightly more mathematically demanding than the three previous sources.
  • Model Predictive Control: Theory, Computation, and Design by J. B. Rawlings,  D. Q. Mayne and M. M. Diehl
    • Probably the most complete book on linear MPC, although it might be a difficult read for a beginner in the topic.

Online Courses

  • Numerical Optimal Control by M. Diehl
    • Very complete learning material, goes very well with his book
  • Underactuated Robotics by R. Tedrake, R. Deits and T. Koolen from edX learning platform
    • A nice course which covers topics on Dynamic Programming, Control and Dynamic Optimization (can also be found here)
  • Nptel by the Indian Institutes of Technology (IIT) and Indian Institute of Science (IISc)
    • There are great courses on this site, however, those on Control, State Estimation, Model Predictive Control, and Optimal Control seem particularly good.

Linear Algebra

Books

  • Introduction to Linear Algebra by  G. Strang
    • Great presentation and intuition on the topic, goes well with his online video lectures
  • Linear Algebra by Jim Hefferon 
    • Freely available online, very enjoyable exercises

Online Courses

  • Linear Algebra - Foundations to Frontiers by M. Myers and R. van de Geijn from edX learning platform
    • Great course, gives mathematical background as well as great practical exercises.  
  • Linear Algebra by  G. Strang
    • Similar to his book, Linear Algebra is presented in a very intuitive and easy to understand fashion. 

Machine Learning

Books

  • Deep Learning by  I. Goodfellow, Y. Bengio and A. Courville
    • Authored by pioneers on the field, freely available. Probably the best book on Deep Learning.
  • Hands-On Machine Learning with Scikit-Learn and TensorFlow by A. Geron  
    • For people who want to learn ML by doing practical examples

Online Courses

  • Deep Learning Specialization by Andrew Ng, K. Katanforoosh and B. Mourri from coursera learning platform
    • A series of 5 courses, that take you from knowing nothing to a very good understanding and practical training on deep learning. Explanations need a minimum mathematical requirement. 
  • Machine Learning by by Andrew Ng
    • The course that made Andrew Ng famous. A very nice course, although might be slightly outdated. You can also find his course at Stanford here.

Prerequisites

This section outlines useful material that can help polish your math and programming skills before (or while) you are learning optimization and/or machine learning.

  • Linear Algebra 
    • Athough there is a whole section about linear algebra, I thought I should emphasize it, as it is one of the pillars for both optimization and machine learning.
  • Python programming  
    • There is a HUGE number of python courses, and even a significant number of online posts ranking the different courses, so a little google search might be the best way to find the best course for you.
    • A course I am confident recommending is Introduction to Computer Science and Programming Using Python by MIT on the edX learning platform. Very complete course, although it is quite time consuming.
  • Mathematics for Machine Learning by Imperial College London 
    •  three course specialization, focusing on linear algebramultivariate calculus, and principal component analysis
    • Book freely available here
  • Algorithms Specialization by Tim Roughgarden from Stanford at the Coursera platform
    •  very nice course that teaches the fundamentals of the design and analysis of algorithms. Focuses particularly on the practical aspects, but also give some theory, and makes thinking algorithmically quite fun. 

Remarks

Note that blogs, GitHub repositories, YouTube symposiums, online classes and tutorials can be excellent learning material. Particularly for ML, RL and DL there are new courses and tutorials coming out everyday! Maybe worthwhile exploring the web on your own :).

You can have a look at our codes section for some code-tutorials developed by the group, or to our additional resources section, where we list some podcasts, blogs, and other sites that might be of interest.